Xcode iOS ObjectiveC 下的 NSDateFormatter 日期時間

2015/10/07
~ 阿亮 ~

一般時間日期會用以下的程式碼來取得:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"];
NSString *todayStr = [dateFormatter stringFromDate:[NSDate date]];

但,如果你的程式若有牽涉到用時間日期來做資料擷取、認證等問題時,就有些東西要注意了。

比如,就我的例子可能手機大都用台灣時間,加上伺服器也調成台灣時間的話,自己測試的話,就當然很順,但如果使用者手機設不是台灣時間呢?那時間就會對不起來了。

解決的方法就是手機在算時間日期時,加上 timeZone,

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Taipei"]];
[dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"];
NSString *todayStr = [dateFormatter stringFromDate:[NSDate date]];

另外,可能一般會比較沒注意到,試著將「西曆」改設定成「日本曆」,這時 dateFormat 的 yyyy 會回傳 0027,而不是西元的 2015! 這代表在日本曆的「平成27年」。

解決的方法就是設定西曆 (NSGregorianCalendar),完整的日期時間取得的程式碼就是如下了。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Taipei"]];
[dateFormatter setCalendar: [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]];
[dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"];
NSString *todayStr = [dateFormatter stringFromDate:[NSDate date]];

呼~會整死人的啊,在這之前,壓根不知外國人若設成其他非西曆者,根本不能用啊… >”<



站內搜尋



本站其他服務

本站其他軟體



  • 批踢踢快訊 (pttNews)

    身為鄉民的您,是不是常常覺得現在的批踢踢 (PTT) 閱讀器,明明您就只要看幾個板,都幫您分類好,但不是您要的?甚至您只想關注某個人(或某件事)的消息,卻散布在不同東西,找出來很辛苦? 這個 App 可以解決您這些問題,快來用吧!


  • 藝文快訊

    讓你可以輕鬆追蹤含有您想要關注關鍵詞的任何藝文活動訊息,只要有最新的資訊,「藝文快訊」即會推播通知給你.


  • 油價快訊App (OilPrices)

    依據油價及匯率,估算台灣下週油價,另外提供三週、一年以及三年的歷史變化,以及週末下午推播通知最新油價預估或公告。


  • 姓名筆畫吉凶查詢系統

    這是一個提供中文字康熙筆畫的小軟體,並根據農民曆計算每個名字或公司名的總筆畫以及最後的吉凶數,共有四種模式


  • 當令蔬果花卉(AgriInfo)

    是不是常常在超市看到水果蔬菜的價格,總是不確定是當季蔬果?這個服務就是幫你很快判斷眼前的蔬果花卉的價格是否便宜。


  • 臉書粉絲專頁搜尋 (FPSearch)

    不用登入臉書即可搜尋臉書粉絲專頁(臉書粉絲團)所公開的文章。您可以指定特定日期範圍之前的文章,也可設定搜尋粉絲專頁內包含特定關鍵詞的文章。